

<!DOCTYPE html>
<html lang="zh-CN" data-default-color-scheme=auto>



<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/hexo_weini_blog/img/favicon.png">
  <link rel="icon" href="/hexo_weini_blog/img/favicon.png">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="description" content="">
  <meta name="author" content="weini wang">
  <meta name="keywords" content="">
  <meta name="description" content="php基础PHP的8种数据类型 四种标量 boolean integer float string   两种复合类型 array object   两种特殊类型 resource NULL    类型转换 (int), (integer):转换为整型 (bool), (boolean): 转为布尔型 (float), (double), (real): 转为浮点型 (string): 转换成字符串">
<meta property="og:type" content="website">
<meta property="og:title" content="php基础">
<meta property="og:url" content="https://weinirumo.gitee.io/hexo_weini_blog/php/jichu.html">
<meta property="og:site_name" content="weini的播客">
<meta property="og:description" content="php基础PHP的8种数据类型 四种标量 boolean integer float string   两种复合类型 array object   两种特殊类型 resource NULL    类型转换 (int), (integer):转换为整型 (bool), (boolean): 转为布尔型 (float), (double), (real): 转为浮点型 (string): 转换成字符串">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2021-10-12T09:16:11.000Z">
<meta property="article:modified_time" content="2021-10-16T05:05:42.064Z">
<meta property="article:author" content="weini wang">
<meta name="twitter:card" content="summary_large_image">
  
  <title>php基础 - weini的播客</title>

  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/css/bootstrap.min.css" />


  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/github-markdown-css@4/github-markdown.min.css" />
  <link  rel="stylesheet" href="/hexo_weini_blog/lib/hint/hint.min.css" />

  
    
    
      
      <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@10/styles/monokai.min.css" />
    
  

  
    <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.css" />
  


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_kmeydafke9r.css">


<link  rel="stylesheet" href="/hexo_weini_blog/css/main.css" />

<!-- 自定义样式保持在最底部 -->


  <script id="fluid-configs">
    var Fluid = window.Fluid || {};
    var CONFIG = {"hostname":"weinirumo.gitee.io","root":"/hexo_weini_blog/","version":"1.8.12","typing":{"enable":true,"typeSpeed":70,"cursorChar":"_","loop":false},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"right","visible":"hover","icon":""},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"copy_btn":true,"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":0},"lazyload":{"enable":true,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":false,"baidu":null,"google":null,"gtag":null,"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname"}},"search_path":"/hexo_weini_blog/local-search.xml"};
  </script>
  <script  src="/hexo_weini_blog/js/utils.js" ></script>
  <script  src="/hexo_weini_blog/js/color-schema.js" ></script>
<meta name="generator" content="Hexo 5.4.0"></head>


<body>
  <header style="height: 60vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand" href="/hexo_weini_blog/">
      <strong>weini的blog</strong>
    </a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo_weini_blog/">
                <i class="iconfont icon-home-fill"></i>
                首页
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button"
                 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                <i class="iconfont icon-list"></i>
                技术积累
              </a>
              <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                
                  
                  
                  
                  <a class="dropdown-item" href="/hexo_weini_blog/2021/09/27/go%E8%AF%AD%E8%A8%80/">
                    
                    Go语言
                  </a>
                
                  
                  
                  
                  <a class="dropdown-item" href="/hexo_weini_blog/2021/10/12/php/">
                    
                    PHP
                  </a>
                
              </div>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo_weini_blog/archives/">
                <i class="iconfont icon-archive-fill"></i>
                归档
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo_weini_blog/categories/">
                <i class="iconfont icon-category-fill"></i>
                分类
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo_weini_blog/tags/">
                <i class="iconfont icon-tags-fill"></i>
                标签
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo_weini_blog/about/">
                <i class="iconfont icon-user-fill"></i>
                关于
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
              &nbsp;<i class="iconfont icon-search"></i>&nbsp;
            </a>
          </li>
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">&nbsp;<i
                class="iconfont icon-dark" id="color-toggle-icon"></i>&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="banner" id="banner" parallax=true
         style="background: url('/hexo_weini_blog/img/default.png') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="page-header text-center fade-in-up">
            <span class="h2" id="subtitle" title="php基础">
              
            </span>

            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      <div class="container nopadding-x-md">
        <div class="py-5" id="board"
          >
          
          <div class="container">
            <div class="row">
              <div class="col-12 col-md-10 m-auto">
                

<article class="page-content">
  <h2 id="php基础"><a href="#php基础" class="headerlink" title="php基础"></a>php基础</h2><h3 id="PHP的8种数据类型"><a href="#PHP的8种数据类型" class="headerlink" title="PHP的8种数据类型"></a>PHP的8种数据类型</h3><ul>
<li>四种标量<ul>
<li>boolean</li>
<li>integer</li>
<li>float</li>
<li>string</li>
</ul>
</li>
<li>两种复合类型<ul>
<li>array</li>
<li>object</li>
</ul>
</li>
<li>两种特殊类型<ul>
<li>resource</li>
<li>NULL</li>
</ul>
</li>
</ul>
<h3 id="类型转换"><a href="#类型转换" class="headerlink" title="类型转换"></a>类型转换</h3><ul>
<li>(int), (integer):转换为整型</li>
<li>(bool), (boolean): 转为布尔型</li>
<li>(float), (double), (real): 转为浮点型</li>
<li>(string): 转换成字符串</li>
<li>(array): 转换成数组</li>
<li>(object): 转换成对象</li>
</ul>
<h3 id="类型转换函数"><a href="#类型转换函数" class="headerlink" title="类型转换函数"></a>类型转换函数</h3><ul>
<li>intval() 转为整数值</li>
<li>floatval() 获取变量的浮点值</li>
<li>strval() 获取变量的字符串值</li>
</ul>
<h3 id="检测变量类型"><a href="#检测变量类型" class="headerlink" title="检测变量类型"></a>检测变量类型</h3><ul>
<li>is_bool() 判断是否是布尔型</li>
<li>is_int(), is_integer(), is_long() 是否是整型</li>
<li>is_float(), is_double(), is_real() 是否是浮点型</li>
<li>is_string() 是否是字符串</li>
<li>is_array() 是否是数组</li>
<li>is_object() 是否是对象</li>
<li>is_resource() 是否是资源</li>
<li>is_null() 是否为空</li>
<li>is_scalar() 是否是标量 (整数，浮点数，布尔型，字符串)</li>
<li>is_numerice() 是否是任何类型的数字或数字字符串</li>
<li>is_callable() 判断是否是有效的函数名</li>
</ul>
<h3 id="魔术常量"><a href="#魔术常量" class="headerlink" title="魔术常量"></a>魔术常量</h3><ul>
<li><code>__FILE__</code> 当前文件名</li>
<li><code>__LINE__</code> 当前行数</li>
<li><code>__FUNCTION__</code> 当前函数名</li>
<li><code>__CLASS__</code> 当前的类名</li>
<li><code>__METHOD__</code> 当前对象的方法名</li>
</ul>
<h3 id="正则表达式"><a href="#正则表达式" class="headerlink" title="正则表达式"></a>正则表达式</h3><ul>
<li><p>正则表达式的作用</p>
<ul>
<li>分割</li>
<li>匹配</li>
<li>查找</li>
<li>替换</li>
</ul>
</li>
<li><p>正则表达式中包括的元素</p>
<ul>
<li>原子（普通字符：a-z A-Z 0-9、原子表、转义字符）</li>
<li>元字符（有特殊功能的字符）</li>
<li>模式修正符（系统内置部分字符i, m, S, U…）</li>
</ul>
</li>
<li><p>转义字符</p>
<ul>
<li>\d 包含所有数字[0-9]</li>
<li>\D 除所有数字外[^0-9]</li>
<li>\w 包含所有字符（大小写英文字母，下划线，数字） [a-zA-Z_0-9]</li>
<li>\W 除所有字符（大小写英文字母，下划线，数字）外 [a-zA-Z_0-9]</li>
<li>\s 空白区域如回车，换行，分页等 [\f\n\r]</li>
<li>\S 非空白区域 [^\f\n\r]</li>
</ul>
</li>
<li><p>元字符</p>
<ul>
<li>. 匹配任意次单不包含回车换行</li>
<li>* 匹配任意次</li>
<li>？匹配0次或1次</li>
<li>+ 匹配1次或多次</li>
<li>| 选择匹配</li>
<li>^ 匹配开头 | 方括号中表示非</li>
<li>$ 匹配结尾</li>
<li>{m} 匹配前一个内容的重复次数为m次</li>
<li>{m,} 匹配前一个内容的重复次数大于等于m次</li>
<li>{m,n} 匹配前一个内容的重复次数m次到n次</li>
<li>() 合并整体匹配，并放入内存，可使用\1 \2 … 依次获取</li>
</ul>
</li>
<li><p>模式修正符：</p>
<ul>
<li>小写i：不区分大小写</li>
<li>小写m：匹配首内容或尾内容时采用多行识别匹配</li>
<li>小写s：将转义回车取消视为单行匹配</li>
<li>小写x：忽略正则中的空白</li>
<li>大写A：强制$匹配尾部无任何内容</li>
<li>大写U：禁止贪婪匹配，值跟踪到最近的一个匹配符并结束，常用在采集程序</li>
<li>小写u：匹配中文</li>
</ul>
</li>
<li><p>Perl正则表达式函数：</p>
<ul>
<li>preg_grep($mode, $str) //匹配查找，返回一个数组</li>
<li>preg_match($mode, $str, $return) // 在字符串中查找匹配项，返回一个数组</li>
<li>preg_match_all($mode, $str, $return[, int flags]) </li>
<li>preg_split($mode,$str [,int limit 切割多少次 [,int flags] ] ) //使用正则表达式分割字符串，并将结果以数组的形式返回（类似explode）。</li>
<li>preg_replace($mode,$replacement,$str [,int limit 匹配多少次]) //查找和替换子字符串（类似str_replace）</li>
<li>preg_quote($str) //在每个正则表达式的特殊字符前面加入一个转义字符（反斜线“\”），正则表达式的特殊字符包括：.\+*?[^]$(){}=!&lt;&gt;|:</li>
</ul>
</li>
</ul>
<h4 id="正则解题方法"><a href="#正则解题方法" class="headerlink" title="正则解题方法"></a>正则解题方法</h4><ol>
<li>先写出一个要匹配的字符串</li>
<li>自左向右的顺序使用正则表达式的原子和元字符拼接</li>
<li>加入模式修正符</li>
</ol>
<h4 id="常用正则表达式"><a href="#常用正则表达式" class="headerlink" title="常用正则表达式"></a>常用正则表达式</h4><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs php"><span class="hljs-comment">//删除一对中括号内的内容：</span><br><span class="hljs-variable">$str</span> = <span class="hljs-string">&#x27;abc[url]123[/url]xyz&#x27;</span>;<br><span class="hljs-variable">$pattern</span> = <span class="hljs-string">&#x27;/\[url\S*\[\/url\S*\]/&#x27;</span>;<br><span class="hljs-variable">$str</span> = preg_replace(<span class="hljs-variable">$pattern</span>, <span class="hljs-string">&#x27;&#x27;</span>, <span class="hljs-variable">$str</span>);<br><span class="hljs-keyword">echo</span> <span class="hljs-variable">$str</span> . <span class="hljs-string">&#x27;&#x27;</span>; <span class="hljs-comment">//输出：abcxyz</span><br><br><br></code></pre></td></tr></table></figure>


<h3 id="字符串函数"><a href="#字符串函数" class="headerlink" title="字符串函数"></a>字符串函数</h3><h4 id="查找字符串位置函数"><a href="#查找字符串位置函数" class="headerlink" title="查找字符串位置函数"></a>查找字符串位置函数</h4><ul>
<li>strpos($str,search,[int]):查找search在$str中的第一次位置从int开始； </li>
<li>stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置。该函数对大小写不敏感 </li>
<li>strrpos($str,search,[int]):查找search在$str中的最后一次出现的位置从int开始</li>
<li>strripos($str,search,[int]):同上，该函数对大小写不敏感</li>
</ul>
<h4 id="提取子字符串函数（双字节）"><a href="#提取子字符串函数（双字节）" class="headerlink" title="提取子字符串函数（双字节）"></a>提取子字符串函数（双字节）</h4><ul>
<li>substr($str,int start[,int length]):从$str中strat位置开始提取[length长度的字符串]。 </li>
<li>strstr($str1,$str2):从$str1(第一个的位置)搜索$str2并从它开始截取到结束字符串;若没有则返回FALSE。</li>
<li>stristr() 功能同strstr，只是不区分大小写。 </li>
<li>strrchr() 从最后一次搜索到的字符处返回；用处：取路径中文件名</li>
</ul>
<h4 id="替换字符串的PHP字符串函数"><a href="#替换字符串的PHP字符串函数" class="headerlink" title="替换字符串的PHP字符串函数"></a>替换字符串的PHP字符串函数</h4><ul>
<li>str_replace(search,replace,$str):从$str中查找search用replace来替换</li>
<li>str_ireplace(search,replace,$str):同上，该函数对大小写不敏感</li>
<li>strtr($str,search,replace):这个函数中replace不能为””;</li>
<li>substr_replace($Str,$rep,$start[,length]):$str原始字符串,$rep替换后的新字符串,$start起始置,$length替换的长度，该项可选</li>
</ul>
<h4 id="字符串长度"><a href="#字符串长度" class="headerlink" title="字符串长度"></a>字符串长度</h4><ul>
<li>strlen()<blockquote>
<p>获取字符串产长度</p>
</blockquote>
<figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs php"><span class="hljs-keyword">echo</span> strlen(<span class="hljs-string">&quot;Hello world!&quot;</span>);<br><span class="hljs-comment">// 12</span><br></code></pre></td></tr></table></figure></li>
</ul>
<h4 id="分割成数组的PHP字符串函数"><a href="#分割成数组的PHP字符串函数" class="headerlink" title="分割成数组的PHP字符串函数"></a>分割成数组的PHP字符串函数</h4><ul>
<li><p>str_split($str,len):把$str按len长度进行分割返回数组 </p>
</li>
<li><p>split(search,$str[,int]):把$str按search字符进行分割返回数组int是分割几次，后面的将不分割 expload(search,$str[,int])</p>
</li>
</ul>
<h4 id="去空格"><a href="#去空格" class="headerlink" title="去空格"></a>去空格</h4><ul>
<li>ltrim()</li>
<li>rtrim()</li>
<li>trim()</li>
</ul>
<h4 id="大小写"><a href="#大小写" class="headerlink" title="大小写"></a>大小写</h4><ul>
<li><p>strtolower($str): 字符串转换为小写</p>
</li>
<li><p>strtoupper($str): 字符串转换为大写</p>
</li>
<li><p>ucfirst($str): 将函数的第一个字符转换为大写</p>
</li>
<li><p>ucwords($str): 将每个单词的首字母转换为大写</p>
</li>
<li><p>str_word_count()</p>
<blockquote>
<p>对字符串中的单词进行计数</p>
</blockquote>
</li>
</ul>
<figure class="highlight abnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs abnf">echo str_word_count(<span class="hljs-string">&quot;Hello world!&quot;</span>)<span class="hljs-comment">;</span><br></code></pre></td></tr></table></figure>

<ul>
<li>strrev()<blockquote>
<p>翻转字符串</p>
</blockquote>
</li>
</ul>
<figure class="highlight arduino"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs arduino"><span class="hljs-function">echo <span class="hljs-title">strrev</span><span class="hljs-params">(<span class="hljs-string">&quot;Hello world!&quot;</span>)</span></span>;<br><span class="hljs-comment">// !dlrow olleH</span><br></code></pre></td></tr></table></figure>

<ul>
<li>strpos()</li>
</ul>
<blockquote>
<p>检索字符串内指定的字符或文本.如果找到匹配，则会返回首个匹配的字符位置。如果未找到匹配，则将返回 FALSE。</p>
</blockquote>
<figure class="highlight arduino"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs arduino"><span class="hljs-function">echo <span class="hljs-title">strpos</span><span class="hljs-params">(<span class="hljs-string">&quot;Hello world!&quot;</span>,<span class="hljs-string">&quot;world&quot;</span>)</span></span>;<br></code></pre></td></tr></table></figure>

<ul>
<li>stripos()<blockquote>
<p>将一个字符串转换为数组。</p>
</blockquote>
</li>
</ul>
<figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs awk">echo stripos(<span class="hljs-string">&#x27;abcabc&#x27;</span>, <span class="hljs-string">&#x27;A&#x27;</span>);<br><span class="hljs-regexp">//</span> <span class="hljs-number">0</span><br>echo stripos(<span class="hljs-string">&#x27;abcabc&#x27;</span>, <span class="hljs-string">&#x27;B&#x27;</span>);<br><span class="hljs-regexp">//</span> <span class="hljs-number">1</span><br>echo stripos(<span class="hljs-string">&#x27;abcabc&#x27;</span>, <span class="hljs-string">&#x27;C&#x27;</span>);<br><span class="hljs-regexp">//</span> <span class="hljs-number">2</span><br>var_dump(stripos(<span class="hljs-string">&#x27;abcabc&#x27;</span>, <span class="hljs-string">&#x27;D&#x27;</span>));<br><span class="hljs-regexp">//</span> bool(false)<br></code></pre></td></tr></table></figure>


<ul>
<li>str_replace()<blockquote>
<p>用一些字符串替换字符串中的另一些字符</p>
</blockquote>
</li>
</ul>
<figure class="highlight arduino"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs arduino"><span class="hljs-function">echo <span class="hljs-title">str_replace</span><span class="hljs-params">(<span class="hljs-string">&quot;world&quot;</span>, <span class="hljs-string">&quot;Kitty&quot;</span>, <span class="hljs-string">&quot;Hello world!&quot;</span>)</span></span>;<br></code></pre></td></tr></table></figure>

<ul>
<li>strtoupper() strtolower()<blockquote>
<p>字符串大小写转换</p>
</blockquote>
</li>
</ul>
<figure class="highlight aspectj"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs aspectj"><span class="hljs-function">echo <span class="hljs-title">strtoupper</span><span class="hljs-params">(<span class="hljs-string">&#x27;hello world&#x27;</span>)</span></span>;<br><span class="hljs-comment">// HELLO WORLD</span><br><br><span class="hljs-function">echo <span class="hljs-title">strtolower</span><span class="hljs-params">(<span class="hljs-string">&#x27;Hello World&#x27;</span>)</span></span>;<br><span class="hljs-comment">// hello world</span><br></code></pre></td></tr></table></figure>

<ul>
<li>str_split()<blockquote>
<p>将一个字符串转换为数组。</p>
</blockquote>
</li>
</ul>
<figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs lisp">print_r(<span class="hljs-name">str_split</span>(&#x27;good_morning&#x27;, <span class="hljs-number">2</span>))<span class="hljs-comment">;</span><br></code></pre></td></tr></table></figure>

<h3 id="数组函数"><a href="#数组函数" class="headerlink" title="数组函数"></a>数组函数</h3><h4 id="排序类"><a href="#排序类" class="headerlink" title="排序类"></a>排序类</h4><ul>
<li>按value<ul>
<li>sort</li>
<li>rsort</li>
<li>asort</li>
<li>arsort</li>
</ul>
</li>
<li>按key<ul>
<li>ksort</li>
<li>krsort</li>
</ul>
</li>
<li>按字母<ul>
<li>natsort  区分大小写的排序</li>
<li>natcasesort  不区分大小写的排序</li>
</ul>
</li>
<li>回调<ul>
<li>usort</li>
</ul>
</li>
<li>规律<ul>
<li>没有k，排序按照value排序，排序有”a”的表示要保留KEY，有”r”的倒序排</li>
<li>有k，排序按照【KEY】排序，有”r”的倒序排</li>
<li>有”u”的，表示要丢到回调函数中处理的</li>
</ul>
</li>
</ul>
<h4 id="键值操作类"><a href="#键值操作类" class="headerlink" title="键值操作类"></a>键值操作类</h4><blockquote>
<p>都有返回值，没有在原来的参数上修改</p>
</blockquote>
<ul>
<li>array_values($arr);//获取$arr中的值重排，去掉下标【返回值新索引数组】</li>
<li>array_keys($arr[,”str”,true])//获取$arr中所有字符是”str”的下标，形成索引数组，true表示区分大小写【返回新索引数组】</li>
<li>array_search(“is”,$arr[,true]) //返回值”is”在$arr中的key，找不到返回fales,true表示严格按照类型(8,”8”)【返回第一个匹配值】</li>
<li>in_array(“str”,$arr);//判断”str”在$arr中是否存在，【返回BOOL】</li>
<li>is_array($arr);//判断是否是数组【返回BOOL】</li>
<li>array_key_exists($key,$arr); //查询$arr中是否有$key，【返回BOOL】</li>
<li>array_flip($arr);// 交换键值，如有重复，后来居上，【返回新数组】</li>
<li>array_reverse($arr,[true|false]);//数组顺序反转，param2是否保留原来键值【返回新关联/索引数组】</li>
<li>array_column(array(),’name’[,name_two]) — 返回数组中指定的name列[可选参数，如果有返回name=&gt;name_two的形式]【返回一维数组】</li>
</ul>
<h4 id="元素个数和唯一性"><a href="#元素个数和唯一性" class="headerlink" title="元素个数和唯一性"></a>元素个数和唯一性</h4><ul>
<li>array_unique($arr);//去掉$arr中的重复值，重复的保留第一个值，【返回数组，键值保留】</li>
<li>array_count_values($arr)//统计数组值出现的次数，【返回数组，KEY为原来数组的值，VALUE为统计的次数】</li>
<li>count($arr[,1])/sizeof();//统计$arr的元素个数，参数”1”表示统计多维数组开启，默认0为关闭【返回统计个数】</li>
</ul>
<h4 id="回调函数"><a href="#回调函数" class="headerlink" title="回调函数"></a>回调函数</h4><ul>
<li>array_filter($arr,”function”);//把$arr放到函数function中处理，【返回判断为TRUE的数据组成新数组，键值保留】</li>
<li>array_walk($arr,”function”[,”data”]);//把$arr放到function(&amp;$v,$k,$data)中处理【返回值为bool】</li>
<li>array_map(“function”,$arr,$arr2,$arr3,….);//把所有数组返回到回调函数统一处理，【返回数组】</li>
<li>array_reduce($arr,myfunction[,initial])：把一维数组$arr中的值依次传到自定义函数myfunction($v1,$v2)的v2上，v1为累加值类似于( .= ),[如果有initial，先把其当v1传进去]【返回字符串】</li>
</ul>
<h4 id="拆分，合并，分解，接合数组"><a href="#拆分，合并，分解，接合数组" class="headerlink" title="拆分，合并，分解，接合数组"></a>拆分，合并，分解，接合数组</h4><ul>
<li>array_slice($arr,1[,2]);//在$arr中，从第二个开始取[，返回俩个值]【返回新数组(对原数组无影响)，键值保留】</li>
<li>array_splice($arr,1[,2,”aaa”,”bb”]);//删除或替换，从$arr第二个开始取，删除或替换2个值【返回值为新数组，拆掉原数组】</li>
<li>array_combine($arr1,$arr2);//数组$arr1为KEY,$arr2为VALUES结合形成新索引数组【返回索引数组】</li>
<li>array_merge($arr1,$arr2,$arr3…);//数组进行合并，保留键值，有重复，后来者居上【返回新数组】<ul>
<li>array_merge发现有key值相同的，取后者；</li>
<li>$arr1+$arr2 发现有key值相同的，取前者，第二个重复的值丢弃</li>
</ul>
</li>
<li>array_intersect($arr1,$arr2)//返回两个数组的交集，键值不变</li>
<li>array_diff($arr1,$arr2)//返回两数组的差集，返回的值为第一个数组的值，键值不变</li>
<li>array_chunk($arr,2)//分割数组,把$arr按照【2个为一组】均等分割【返回一个二维数组】</li>
</ul>
<h4 id="数组的数据结构【2-无返回值，传值引用，就直接对原数组进行了修改】"><a href="#数组的数据结构【2-无返回值，传值引用，就直接对原数组进行了修改】" class="headerlink" title="数组的数据结构【2.无返回值，传值引用，就直接对原数组进行了修改】"></a>数组的数据结构【2.无返回值，传值引用，就直接对原数组进行了修改】</h4><ul>
<li>array_shift($arr)//从开头，删除数组第一个元素</li>
<li>array_unshift($arr,”one”,”two”)//从开头，添加元素</li>
<li>array_pop($arr)//从结尾，删除数组最后一个元素</li>
<li>array_push($arr,”aaa”);//从结尾，添加元素</li>
<li>current($arr)//返回数组中的当前单元 比如是关联数组是不知道下标，可以输出当前数组的办法解决</li>
<li>shuffle($arr)//随机的重组$arr，顺序变乱【返回新数组，保留键值】</li>
<li>array_sum($arr);//返回$arr的value的和【返回一个值】</li>
<li>range(0,10,2,)//快速创建0，10的数组，间隔为2，所以有5个值【返回新索引数组】</li>
<li>http_build_query($arr)//把关联数组转换成一个经过urlencode加密的URL eg:array[“a”=&gt;2];=&gt;URL:a=2&amp;</li>
</ul>
<h3 id="文件处理"><a href="#文件处理" class="headerlink" title="文件处理"></a>文件处理</h3><ul>
<li><p>基础函数    </p>
<ul>
<li>file_exists($file)//文件是否存在，【true/false】</li>
<li>filesize($file)  //返回文件的大小【大小字节/出错false】</li>
<li>is_readale($file)//是否可读【返回bool】</li>
<li>is_writeable($file)//是否可写【返回bool】</li>
<li>is_executable($file)//是否可执行【返回bool】</li>
<li>filectime($file)//文件创建时间【时间戳】</li>
<li>filemtime($file)//文件修改时间【时间戳】</li>
<li>fileatime($file)//文件访问时间【时间戳】</li>
<li>stat($file)//返回文件的大部分信息【文件信息数组】</li>
</ul>
</li>
<li><p>目录的基本操作 </p>
<ul>
<li>basename($file)//返回文件名，index.php</li>
<li>dirname($file)//返回文件的路径，c://php/</li>
<li>pathinfo($file)//返回该文件路径的所有信息  [“dirname”目录名] [“basename”文件名] [“extension”文件后缀]</li>
</ul>
</li>
<li><p>目录复制，删除，统计大小使用的总结：</p>
<ul>
<li>本质：依靠递归思想，对目录的的循环遍历,通过每一个文件的操作，得出结果</li>
<li>函数：<ul>
<li>复制：copy($org,$to);mkdir()</li>
<li>删除：unlink($file);mrdir();</li>
<li>统计大小:filesize($file)</li>
</ul>
</li>
</ul>
</li>
<li><p>遍历目录</p>
<ol>
<li>opendir($file)//打开一个目录，参数为目录名或目录路径【返回资源型的目录句柄$dir_handle,无权限返false】</li>
<li>readdir($dir_handle);//读取目录，参数为目录句柄，while,返回当前指向对象的名字，目录指针后移【返回filename,没有是返false】</li>
<li>closedir($dir_handle)//关闭打开的目录</li>
<li>rewinddir($dir_handle) //倒回目录句柄，将目录指针重置到目录开始</li>
</ol>
</li>
<li><p>建立和删除目录</p>
<ul>
<li>mkdir(“dir_name”);//建立一个空的目录</li>
<li>rmdir(“dir_name”);//删除一个空的目录</li>
<li>unlink(“file_name”)//删除一个文件，当删除目录是，必须删除该目录下的文件</li>
</ul>
</li>
<li><p>文件的基本操作</p>
<ul>
<li>fopen($fileName,”模式字符r,w,x”)//打开一个文件，【返回值为资源型$handle】</li>
<li>fclose($handle)    //关闭打开的文件【返回BOOL】</li>
<li>fwrite($handle,”$data”)//把$data写入$handle文件,先清空后写入，【成功返回$handle，失败返回false】</li>
<li>file_put_contents($filename,$data);//它是上边三个合起来的效果</li>
<li>file_get_contents($filename)//读取文件里的信息【返回字符串】</li>
<li>flock($handle,$operation)    //用$operation锁定文件$handle</li>
<li>copy($file1,$file2);//赋值$file1，形成$file2【返回BOOL】</li>
<li>unlink($file);//删除$file文件【返回BOOL】</li>
<li>rename($file1,$file_new_name);//重命名【返回BOOL】</li>
</ul>
</li>
<li><p>文件的上传</p>
<ul>
<li>is_upload_file($_FILES[‘file’][‘tmp_name’]) //检查是否合法</li>
<li>move_upload_file($_FILES[‘file’][‘tmp_name’],$url); //上传合法文件到$url<br>注意：html:form: method=”post” ;enctype=”multipart/form-data”</li>
</ul>
</li>
<li><p>文件下载</p>
<ul>
<li>header(‘content-disposition:attachment;filename=’.basename($filename));//表示附件方式下载</li>
<li>header(‘content-length:’.filesize($filename));</li>
<li>readfile($filename);</li>
</ul>
</li>
</ul>
<h3 id="数学函数"><a href="#数学函数" class="headerlink" title="数学函数"></a>数学函数</h3><ul>
<li>ceil()//向上取整</li>
<li>floor()//向下取整</li>
<li>round();//四舍五入</li>
<li>abs();//取绝对值</li>
<li>rand(10，100)//随机取值</li>
<li>mt_rand(10,100)//随机取值，算法不同，速度更快</li>
<li>fmod()//返回除法浮点形余数</li>
<li>max(int/$arr)//取最大值</li>
<li>min(int/$arr)//取最小值</li>
<li>pow(1024,2)//返回1021的2次幂</li>
</ul>
<h3 id="时间函数"><a href="#时间函数" class="headerlink" title="时间函数"></a>时间函数</h3><ul>
<li>date_default_timezone_set()(‘PRC’);//设置时区为中国<ul>
<li>date.timezone =”PRC”;//PHP.INI</li>
</ul>
</li>
<li>time();//默认获取当前时间，【返回时间戳格式】</li>
<li>micritime();//获取当前时间【返回毫秒的时间戳】</li>
<li>mktime(H,i,s,m,d,Y)//指定时间转为时间戳，参数为空的时候作用与time()相同【返回时间戳格式】</li>
<li>strtotime(‘2015-10-10 10:10:10’);//指定时间转换为时间戳【返回时间戳】</li>
<li>date(“Y-m-d H:i:s”,time());//转换时间戳为日期格式【返回目标格式的字符串】</li>
<li>getdate()//获取当前时间，【返回一个数组，参数年，月，日等都有】</li>
</ul>
<h3 id="URL处理函数"><a href="#URL处理函数" class="headerlink" title="URL处理函数"></a>URL处理函数</h3><ul>
<li>urlencode($url)//对该URL进行编码；原因：防止乱码，解决空格的呢个字符不能传递问题，form也是此编码格式传递</li>
<li>urldecode($url)//对该URL进行解码</li>
<li>parse_url($url)//返回该URL的所有信息，[scheme协议][host域名] [path路径][query参数]  【返回含信息的数组】</li>
<li>pathinfo($url)//[“dirname”目录名] [“basename”文件名] [“extension”文件后缀]【返回含信息的数组，下标不同】</li>
<li>get_meta_tags($url)//获取该页面的所有META标签【返回关联数组】</li>
</ul>
<h2 id="2-面向对象"><a href="#2-面向对象" class="headerlink" title="2. 面向对象"></a>2. 面向对象</h2><h3 id="面向对象基础"><a href="#面向对象基础" class="headerlink" title="面向对象基础"></a>面向对象基础</h3><ul>
<li><p>面向对象的三种权限标识符</p>
<ul>
<li>public     公共成员，完全公开，没有访问限制</li>
<li>protected  保护成员，在类内不和子类中可以访问</li>
<li>private    私有成员，在类的内部才可以访问</li>
</ul>
</li>
<li><p>面向对象的三大特征：</p>
<ul>
<li>继承</li>
<li>封装</li>
<li>多态</li>
</ul>
</li>
</ul>
<h4 id="魔术方法"><a href="#魔术方法" class="headerlink" title="魔术方法"></a>魔术方法</h4><ul>
<li><code>__construct()</code> 实例化类时自动调用</li>
<li><code>__destruct()</code>  类对象使用结束时自动调用</li>
<li><code>__set()</code>  给未定的属性赋值时调用</li>
<li><code>__get()</code> 调用未定义的属性时调用</li>
<li><code>__isset()</code> 使用isset()或empty()函数时会调用</li>
<li><code>__unset()</code> 使用unset()时会调用</li>
<li><code>__sleep()</code> 使用serialize序列化时会调用</li>
<li><code>__wakeup()</code> 使用unserialize反序列化时会调用</li>
<li><code>__call()</code> 调用一个不存在的方式时调用</li>
<li><code>__callStatic()</code> 调用一个不存在的静态方式时调用</li>
<li><code>__toString()</code> 把对象转换成字符串的时候会调用</li>
<li><code>__invoke()</code> 当尝试把对象当方法调用时调用</li>
<li><code>__set_state()</code> 当使用var_export()函数时调用，接收一个数组参数</li>
<li><code>__clone()</code> 当使用clone复制一个对象时调用</li>
</ul>
<h4 id="this-self-parent这三个关键词分别代表什么？"><a href="#this-self-parent这三个关键词分别代表什么？" class="headerlink" title="$this, self, parent这三个关键词分别代表什么？"></a>$this, self, parent这三个关键词分别代表什么？</h4><ul>
<li>$this 当前对象</li>
<li>self 当前类</li>
<li>parent 当前类的父类</li>
</ul>
<h4 id="final"><a href="#final" class="headerlink" title="final"></a>final</h4><ul>
<li>final 不能修饰属性</li>
<li>修饰方法，此方法能继承，不能重写</li>
<li>修饰类，此类不能被继承</li>
</ul>


  
</article>

              </div>
            </div>
          </div>
        </div>
      </div>
    

    
      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
      </a>
    

    
      <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
    

    
  </main>

  <footer class="text-center mt-5 py-3">
  <div class="footer-content">
     <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a> 
  </div>
  

  

  
</footer>


  <!-- SCRIPTS -->
  
  <script  src="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.css" />

  <script>
    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
    NProgress.start()
    window.addEventListener('load', function() {
      NProgress.done();
    })
  </script>


<script  src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js" ></script>
<script  src="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/js/bootstrap.min.js" ></script>
<script  src="/hexo_weini_blog/js/events.js" ></script>
<script  src="/hexo_weini_blog/js/plugins.js" ></script>

<!-- Plugins -->


  <script  src="/hexo_weini_blog/js/local-search.js" ></script>



  
    <script  src="/hexo_weini_blog/js/img-lazyload.js" ></script>
  



  



  
    <script  src="https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/anchor-js@4/anchor.min.js" ></script>
  
  
    <script defer src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js" ></script>
  






  <script  src="https://cdn.jsdelivr.net/npm/typed.js@2/lib/typed.min.js" ></script>
  <script>
    (function (window, document) {
      var typing = Fluid.plugins.typing;
      var title = document.getElementById('subtitle').title;
      
      typing(title)
      
    })(window, document);
  </script>















<!-- 主题的启动项 保持在最底部 -->
<script  src="/hexo_weini_blog/js/boot.js" ></script>


</body>
</html>
